1. Field of the Invention
The invention relates to computer program execution analysis systems and methods. More particularly, the invention relates to systems and methods for creating graphics and text displays of results yielded by a computer program execution analyzer.
2. Description of the Prior Art
In order to improve performance of code generated by various families of computers, it is often necessary to determine where large time periods are being spent by a given processor in executing code; such efforts are commonly known in the computer processing arts as locating "hot-spots." For instance, an application program usually consists of many source files and subroutines most of which will require different processing times. When tuning the code of an application program for optimal performance, a programmer often runs an execution-analysis tool to determine the most frequently executed or most time-consuming instructions in the code. The programmer then concentrates on tuning those areas that have the most effect on decreasing execution time. Also, execution-analysis tools are often necessary when porting code from one computer system to another. In practice, it is often critical to re-tune ported codes inasmuch as processing times and "hot-spots" usually differ from system to system-for the same program.
Various execution-analysis tools are disclosed in the following U.S. Pat. Nos. 5,103,394 (issued to Blasciak on Apr. 7, 1992); 5,047,919 (issued to Sterling et al. on Sep. 10, 1991); 4,943,968 (issued to Hirose et al. on Jul. 24, 1990); and 4,034,353 (issued to Denny et al. on Jul. 5, 1977. In addition, these patents illustrate various aspects of software execution that are measured and analyzed.
Basically, most execution-analysis tools identify those sections of an application program which consume the most CPU (e.g. a main processor) time. This function is frequently referred to as "profiling". CPU time may be determined in a number of ways. For instance, CPU time may be estimated by counting a number of times that a statement was executed. The total count in this instance, often referred to as a frequency count, will often be a very large number. A less ambitious profiling technique is to determine relative CPU time. In this instance, not all statement executions are counted. Specifically, statement executions are counted only at predetermined intervals, e.g., every one-hundredth of a second. Each count is called a tick. The CPU information or analysis profile, given in tick or frequency counts, may be provided at the source statement and/or assembly instruction levels.
Current program execution analyzers produce results that are usually organized into many output files. Typically, there will be at least one such output file for each source file. Each such routine or program module may have its own source file. Consequently, to locate a "hot-spot", a programmer must spend considerable time culling through each and every output file to: (a) appreciate the CPU time required in executing each subroutine or module relative to that required by the entire program and (b) with that appreciation in mind, locate a "hot-spot".
Because the data, typically referred to as "profile" results, provided in each output file is often in the form of a table of numbers, the programmer faces a tedious, burdensome and often confusing task of simultaneously visualizing relative performance data for more than a small number, e.g., two or three, source files and comparing the results. Consequently, in an application program that extends over a relatively large number of source files, locating a hot-spot can simply be too daunting to be practically accomplished by even an experienced programmer.
Thus, a need exists in the art for improved systems and methods that can afford a user the ability to quickly access, easily review and understand profile results, particularly for programs that extend over a large number of source files.